package com.southminority.ethnic.controller.research.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 学术论文视图对象
 * 用于前端展示
 * 
 * @author SouthMinority
 */
@Data
@Schema(description = "学术论文视图对象")
public class PaperVO {

    @Schema(description = "论文ID", example = "1")
    private Long id;

    @Schema(description = "论文标题", example = "基于深度学习的苗语语音识别系统研究")
    private String title;

    @Schema(description = "作者，多人用逗号分隔", example = "刘笑玲, 张明远, 李华")
    private String authors;

    @Schema(description = "期刊名称", example = "计算机学报")
    private String journal;

    @Schema(description = "发表年份", example = "2023")
    private Integer publicationYear;

    @Schema(description = "卷号", example = "46")
    private String volume;

    @Schema(description = "期号", example = "3")
    private String issue;

    @Schema(description = "页码", example = "456-468")
    private String pages;

    @Schema(description = "DOI", example = "10.11897/SP.J.1016.2023.00456")
    private String doi;

    @Schema(description = "摘要", example = "本文提出了一种基于深度学习的苗语语音识别方法...")
    private String paperAbstract;

    @Schema(description = "关键词", example = "深度学习,苗语,语音识别,神经网络")
    private String keywords;

    @Schema(description = "PDF文件URL", example = "http://example.com/paper.pdf")
    private String pdfUrl;

    @Schema(description = "代码链接URL", example = "https://github.com/example/miao-speech-recognition")
    private String codeUrl;

    @Schema(description = "分类", example = "人工智能")
    private String category;

    @Schema(description = "论文类型", example = "期刊论文", allowableValues = {"期刊论文", "会议论文", "专著", "其他"})
    private String paperType;

    @Schema(description = "语言类型", example = "苗语")
    private String languageType;

    @Schema(description = "引用次数", example = "15")
    private Integer citationCount;

    @Schema(description = "下载次数", example = "23")
    private Integer downloadCount;

    @Schema(description = "状态: 1-已发布, 0-草稿, -1-已删除", example = "1", allowableValues = {"1", "0", "-1"})
    private Integer status;

    @Schema(description = "创建时间", example = "2023-03-15T10:00:00")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @Schema(description = "更新时间", example = "2025-08-29T16:42:57")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
}
